<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="keywords" content="ParticleTranslation,蓝莓小果冻,粒子效果,函数表,我的世界,Minecraft,粒子翻译,Bemly_">
<meta name="description" content="ParticleTranslation粒子属性文献,蓝莓小果冻翻译,by Bemly_">
<title>粒子效果文献翻译-1.9</title>
<link type="text/css" rel="styleSheet"  href="css/main.css" />
<link rel="icon" sizes="128x128" href="/favicon.ico" >
<link rel="stylesheet" href="CMicon/style.css" />
<!--[if (gte IE 6)&(lte IE 8)]>
  <script type="text/javascript" src="js/supportIE.js"></script>
  <noscript><link rel="stylesheet" href="css/main.css" /></noscript>
  <noscript><link rel="stylesheet" href="css/imgStyle.css" /></noscript>
<![endif]-->
</head>
<body>
<div>
  <div id="whereTo">
    <h1 id="whereActionBar">
      <img id="bemlyImg" src="img/bemly.JPG" alt="蓝莓小果冻" />
      蓝莓小果冻的博客
      <label for="menuCheckbox" id="menuButton">
        <i class="czs-menu-l"></i>
      </label>
      <input id="menuCheckbox" type="checkbox"></input>
      <ul id="menuList"></br>
        <li>
          <a href="index.html#Index">
            <i class="czs-doc-file-l"></i>
            基岩版粒子文档翻译索引
          </a>
        </li>
        <i class="hr"></i>
        <li>
          <a href="learnArea.html">
            <i class="czs-board-l"></i>
            三好学生
          </a>
        </li>
        <i class="hr"></i>
        <li>
          <a href="index.html#First">
            <i class="czs-thumbs-up-l"></i>
            宣传委员
          </a>
        </li>
        <i class="hr"></i>
        <li>
          <a href="#">
            返回顶部
            <i class="czs-arrow-up-l"></i>
          </a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          <a href="#endLink">
            <i class="czs-arrow-down-l"></i>
            返回底部
          </a>
        </li></br>
      </ul>
    </h1>
  </div>
  <div id="bgm">
    <audio preload="auto" controls="controls" loop="loop" autoplay="autoplay">
      <source src="http://files.git.oschina.net/group1/M00/07/8D/PaAvDFzL20CAHI46ACKm2mjoUdY243.mp3?token=4bd0a6459c89386f9ee2db1a0ae0b53c&ts=1556863885&attname=bgm2.mp3&disposition=attachment" type="audio/mpeg">
      <source src="http://files.git.oschina.net/group1/M00/07/8D/PaAvDFzL2yuAL4TfAHkpQBFxa8g778.wav?token=0afddd7942ebb9ee03d97b5020848251&ts=1556863818&attname=bgm2.wav&disposition=attachment" type="audio/wav">
      <embed height="41" width="41" src="http://files.git.oschina.net/group1/M00/07/8D/PaAvDFzL20CAHI46ACKm2mjoUdY243.mp3?token=4bd0a6459c89386f9ee2db1a0ae0b53c&ts=1556863885&attname=bgm2.mp3&disposition=attachment" type="audio/mpeg" />代码辣鸡非我意,自已动手分田地;你若气死谁如意?谈笑风生活长命.
    </audio>
  </div>
</div>
</br></br></br></br>
<center>
<h1> <p id="Index">PARTICLES DOCUMENTATION 
</br>Version: 1.9.0.10 
</br>粒子效果制作使用说明
</br>此表适用于1.9.0.10 </h1>
<table border="7">
<tr> <th><p>Index</br>目录</p></tr> </th>
<tr> <th><a href="# Component Concept"> Component Concept 
</br>本组件概念</a></tr> </th>
<tr> <th><a href="# Namespacing"> Namespacing 
</br>命名空间</a></th> </tr>
<tr> <th><a href="# MoLang integration"> MoLang integration 
</br>MoLang表达式</a></th> </tr>
<tr> <td> <a href="#"> </a> </tr> </td>
<tr> <th><a href="# Basic Structure Overview"> Basic Structure Overview
</br>基本结构概述</a></th> </tr>
<tr> <th><a href="# In Detail"> In Detail
</br>详细说明</a></th> </tr>
<tr> <th><a href="# Current Component List"> Current Component List
</br>现行的组件列表</a></th> </tr>
<tr> <td> <a href="#Emitter Components"> Emitter Components
</br>发出者类组件</a>
</br>(待测试) </tr> </td>
<tr> <td> <a href="#Particle Components"> Particle Components
</br>粒子类组件</a> </tr> </td>
<tr> <th><a href="# Examples"> Examples
</br>范例</a></th> </tr>
<tr> <td> <a href="# Flame particle">  Flame particle</a> </tr> </td>
<tr> <td> <a href="# Smoke particle">  Smoke particle</a> </tr> </td>
<tr> <td> <a href="# Mob Flame effect">  Mob Flame effect</a> </tr> </td>
<tr> <td> <a href="# Bouncing Bubbles">  Bouncing Bubbles</a> </tr> </td>
</table>
</center>



<h1><p id=" Component Concept"> Component Concept 
</br>本组件概念（需要更正） </p></h1>
The particle system is component based.What this means is that particle effects are composed via a set of components.
</br>粒子系统是基于组件的，这就意味着粒子效果是由组件构成的
</br>In order for an effect to do something, you add a component that handles that aspect of the effect.
</br>您可以添加一个处理效果方面的组件来让此效果起作用
</br>For example, an emitter usually needs to have rules for its lifetime, 
</br>比如，发出者通常需要有生命周期的规则
</br> thus the effect should have one or more lifetime components
</br>所以粒子效果应该具有一个或多个生命周期组件
</br>that handle lifetime duties for the emitter and emitted particles.
</br>用来处理发射器和发射粒子在生命周期时的任务
</br>
</br>
The idea is that new components can be added later, 
</br>这个想法会在以后添加更多新的组件
</br>and one can combine components to get different behaviors.
</br>并且可以组合组件来得到各种不同的行为
</br>A particle might have a Dynamic component for moving around, 
</br>例如，粒子能作为移动时的动态效果
</br>and a Collision component for handling interaction with the terrain, for example.
</br>以及用于处理与地形之间进行交互的组件
</br>
</br>
Think of components as telling the particle system 
</br>您可以将组件视为告诉粒子系统
</br>what you want the emitter or particle to do, 
</br>您最想让发出者或粒子干一些有趣的行为
</br>rather than exposing a list of particle parameters 
</br>而不是查看这些粒子参数列表
</br>and wrangling of those parameters to get the desired behavior. 
</br>并围绕这些参数获得所需要的行为
</br>
<a href="#Index">返回顶部</a><br><br>




<h1><p id=" Namespacing"> Namespacing
</br>命名空间</p></h1>
All particle effects should be namespaced (in their name). 
</br>所有的粒子效果应该变成命名空间的格式（在这些行为的名称处） 
</br>
</br>Namespacing involves adding a 'name:' prefix on the effect tag.
</br>命名空间需要在效果标签前增加一个“&lt;string字符串&gt;:” 
</br>
</br>Regular Minecraft will use the 'minecraft: prefix.  
</br>原版《我的世界》语法通常使用“minecraft:”作为前缀
</br>See the examples for example names.
</br>详细可以参见范例中的示例命名
</br>
<a href="#Index">返回顶部</a><br><br>




<h1><p id=" MoLang integration"> MoLang integration
</br>MoLang表达式</p></h1>
any field can use a MoLang expression. 
</br>任何的数据都可以使用MoLang表达式
</br>MoLang expressions are strings,
</br>and are defined in the MoLang documentation.  
</br>MoLang表达式是一种字符串，您可以在《MoLang documentation》中找到MoLang参数的定义与说明
</br>The particle system uses some special MoLang variables that particle MoLang expressions can use.  
</br>粒子系统能用一些特殊的MoLang变量，这些可在下文的参数中查看，更多详细可以参见《MoLang documentation》
</br> Additionally, custom MoLang paramaters can be set in various ways 
</br>此外，可以以各种方式自定义MoLang变量的参数
</br> and used in MoLang expressions in effects.
</br>并可使用MoLang表达式</br>
</br><h2>Parameters 参数</h2>
<table border="3" style="width:100%; border-style:solid; border-collapse:collapse; border-width:3;">
<tr> <th style="border-style:solid; border-width:3;">Name名称</th> 
<th style="border-style:solid; border-width:3;">Description说明</th> </tr>
<tr>
<td style="border-style:solid; border-width:3; padding:7px">variable.emitterage
<br>变量:发出者状态</td>
<td style="border-style:solid; border-width:3; padding:7px">Age since the current loop started for the emitter
<br>自开始发出循环以来的时间</br></td>
</tr>
<tr>
<td style="border-style:solid; border-width:3; padding:7px">variable.emitterlifetime
<br>变量:发出者生命周期</td>
<td style="border-style:solid; border-width:3; padding:7px">How long the current loop lasts for the emitter
<br> 持续发出的时长 </br></td>
</tr>
<tr>
<td style="border-style:solid; border-width:3; padding:7px">variable.emitterrandom1
<br>变量:随机发出者1 </td>
<td style="border-style:solid; border-width:3; padding:7px">A random from 0.0 to 1.0 that is constant for the current loop of the emitter
<br> 一个发出者当前循环的常量是0.0到1.0中的随机值 </br></td>
</tr>
<tr>
<td style="border-style:solid; border-width:3; padding:7px">variable.emitterrandom2
<br>变量:随机发出者2 </td>
<td style="border-style:solid; border-width:3; padding:7px">Another random from 0.0 to 1.0 that is constant for the current loop of the emitter
<br> 另一个发出者当前循环的常量是0.0到1.0中的随机值 </br></td>
</tr>
<tr>
<td style="border-style:solid; border-width:3; padding:7px">variable.emitterrandom3
<br>变量:随机发出者3 </td>
<td style="border-style:solid; border-width:3; padding:7px">A third random from 0.0 to 1.0 that is constant for the current loop of the emitter
<br> 第三个个发出者当前循环的常量是0.0到1.0中的随机值 </br></td>
</tr>
<tr>
<td style="border-style:solid; border-width:3; padding:7px">variable.emitterrandom4
<br>变量:随机发出者4 </td>
<td style="border-style:solid; border-width:3; padding:7px">A fourth random from 0.0 to 1.0 that is constant for the current loop of the emitter
<br> 第四个发出者当前循环的常量是0.0到1.0中的随机值 </br></td>
</tr>
<tr>
<td style="border-style:solid; border-width:3; padding:7px">variable.particleage
<br>变量:粒子状态 </td>
<td style="border-style:solid; border-width:3; padding:7px">How long the particle has lived
<br>粒子的寿命长度 </br></td>
</tr>
<tr>
<td style="border-style:solid; border-width:3; padding:7px">variable.particlelifetime
<br>变量:粒子生命周期 </td>
<td style="border-style:solid; border-width:3; padding:7px">How long the particle lives for
<br>粒子存在时发出的时长 </br></td>
</tr>
<tr>
<td style="border-style:solid; border-width:3; padding:7px">variable.particlerandom1
<br>md以后做了再翻译艹 </td>
<td style="border-style:solid; border-width:3; padding:7px">A random from 0.0 to 1.0 that is constant for the lifetime of the particle</br></td>
</tr>
<tr>
<td style="border-style:solid; border-width:3; padding:7px">variable.particlerandom2</td>
<td style="border-style:solid; border-width:3; padding:7px">Another random from 0.0 to 1.0 that is constant for the lifetime of the particle</br></td>
</tr>
<tr>
<td style="border-style:solid; border-width:3; padding:7px">variable.particlerandom3</td>
<td style="border-style:solid; border-width:3; padding:7px">A third random from 0.0 to 1.0 that is constant for the lifetime of the particle</br></td>
</tr>
<tr>
<td style="border-style:solid; border-width:3; padding:7px">variable.particlerandom4</td>
<td style="border-style:solid; border-width:3; padding:7px">A fourth random from 0.0 to 1.0 that is constant for the lifetime of the particle</br></td>
</tr>
</table>
<a href="#Index">返回顶部</a><br><br>
<br><br>




<h1><p id=" Basic Structure Overview"> Basic Structure Overview
</br>基本结构概述 </p></h1>
Particle effects consist of basic render parameters, and a set of components. 
</br>粒子效果由基本渲染参数和一些组件所构成
</br> Components can be placed in any order. 
</br>组件则能让整个代码布局变得更加的有序
</br><h2></h2>
Outline 一个大概的格式轮廓：
<br><textarea readonly="true" cols="88" rows="39">
{
  "format_version": "1.10.0", 
      // 基于……版本制作，即大于或等于您所填写的版本才能使用
      //（强烈建议采用范例中的版本，否则可能识别失败致无法使用）
  "particle_effect": {
    "description": {
      "identifier": <string字符串>, 
          // e.g. "minecraft:test_effect", this is the name the particle emitter is referred to as
          // 标识符，记得需要加前缀以符合命名空间格式
          // 比如输入“minecraft:test_effect”来作为您的粒子名称
          // 您可以输入“/summon <string字符串>”命令来生成您的粒子
          //（字符串应填为您制作填写的名称，命令候补区能找到您的粒子）
          // 您还可以制作其他行为的时候调用本粒子效果
      "basic_render_parameters": {
          "material": <string字符串> 
              // Minecraft material to use for emitter 绘制纹理
          "texture": <string字符串>
              // Minecraft texture to use for emitter 渲染材质
      }
    },
    "components": 
      // emission rate components 发出者生命周期组件
      // emission lifetime components 发出者速率组件

      // emission shape components, or the shape of the effect as defined 发出者外形组件，或定义效果的外形
      // by particle emission position and directions 修改粒子生成坐标和方向

      // emitter local space components 发出者局部空间组件
      // components that control initial state of particles 控制粒子初始状态的组件
      // components that control/direct motion of particles 控制/引导粒子运动的组件
      // components that affect how the particle is drawn 影响粒子绘制方式的组件
      // components that affect particle lifetime 影响粒子生命周期的组件
    }
  }
}
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<h1><p id=" In Detail"> In Detail
<br>详细说明</p></h1><h2></h2>
Outline 一个较详细的格式轮廓: 
<br><textarea readonly="true" cols="88" rows="104">

{
  // required for particle .json is the format version and the particle's scope.
  // 粒子行为应是.json格式，需要指明format_version和particles两大范围
  "format_version": "1.8.0",
  "particles": {
    // Overall effect.  This name is the name used to reference the particle 
    // 整体效果，这个名称是用来引用粒子的名称
    // from script, slash command, entities, or anywhere else that reference a particle effect
    // 您可以在脚本、命令、实体或其他任何地方引用此粒子
    "minecraft:my_particle_effect": {
        // Basic render parameters are properties like the texture used, or the material used.
        // 基本渲染参数应是如所用纹理或所用材料这样的属性
        // All particles require a material to render, and a texture to draw. 
        // 所有粒子都需要渲染材质和绘制纹理
        "basic_render_parameters": {
            "material": <string字符串>
            "texture": <string字符串>
        },
        // this section describes curves that can be used later by components
        // 这一节描述了以后可以使用的曲线组件
        // Curves are interpolation values, with inputs from 0 to 1, and
        // outputs based on the curve
        // 曲线是一个可以输入0到1的插值并根据曲线输出
        // the result of the curve is a molang variable of the same name
        // 基于曲线输出的结果是一个同名的MoLang变量
        // that can be referenced in molang in components
        // 待翻译
        // each frame for each particle, the curves are evaluated
        // 待翻译
        // and the result is placed in a molang variable of the name of the curve
        // 并将结果放在曲线名称的MoLang变量中
        "curves": {
          "molangvar": {
            // type can be "linear", "bezier", or "catmull_rom"
            // 您可以填写“linear”（线性曲线），“bezier”（贝塞尔曲线），“catmull_rom” 三种类型
            "type": <type类型>, 
            // control nodes for curve.  These are assumed to be equally
            // 控制曲线的节点，设定这些距离是相等的
            // spaced, e.g. first node is at input value 0, second at 0.25, etc
            // 间隔，例如：第一个节点输入值为0，第二个节点为0.25，等等
            "nodes": [<float/molang>, <float/molang>, <float/molang>, <float/molang>],

            // what is the input value to use
            "input": <float/molang>,

            // what is the range the input is mapped onto
            // between 0 and this value
            "horizontal_range": <float/molang>
          }
        },

       "components: {
            ///////////////////////////////
            // Emitter related components
            // these components primarily affect the emitter bevahior

            // emitter initial state components set up the emitter with
            // particular properties

            // emitter rate components control when particles get emitted
            // these will be run every frame for the emitter to determine if any 
            // particles need to be spawned
 
            // emitter lifetime components control the lifetime of the emitter
            // and the "enabled/disabled" state of the emitter.
            // Emitters can only spawn particles if enabled.
 
            // emitter shapecomponents control where a particle gets emitted
            // and initial shape-driven state such as particle direction
 
            // emitter local space component
            // this component specifies whether entity-based emitters 
            // simulate in local or global space

            ///////////////////////////////
            // Particle related components
            // these components primarily affect the particle behavior
  
            // particle initial condition components control what the initial state
            // of the particles is, such as initial speed, rotation, etc.
            // These are run once at particle creation

            // particle motion components control what happens to the particle
            // on frames after creation, such as it's position (for
            // a parametric particle), drag/acceleration (for a dynamic
            // particle), etc.
            // These are run once per frame per particle

            // particle appearance components control how the particle is rendered 
            // such as what UV coortinates to use, size of the particle,
            // billboard orientation, color tinting, etc.
            // These are run once per frame for visible particles
 
            // particle lifetime components handle when the particle expires
        }
    }
  }
}

</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<h1><p id=" Current Component List"> Current Component List</p></h1>

<h2></h2>
For fields in these components, 
</br>对于这些组件中出现的字段，
</br>the following shorthand is used:
</br>您可以使用以下简写:<br / ><textarea readonly="true" cols="107" rows="7">
<float> - field takes a floating point input
<float/molang> - field takes a floating point input, or a MoLang expression
<default:val> - specifies the default value used if field isn't specified
<bool> - "true" or "false"
<string字符串> - a string 一个
<default> - not a part of the particular line, this just says what this field defaults to if not specified
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<h1><p id="Emitter Components">Emitter Components</p></h1>

<h2></h2>

<h2><p id="Emitter Lifetime Components">Emitter Lifetime Components</p></h2>

<h3></h3>

<h3><p id="Emitter Lifetime Expression component">Emitter Lifetime Expression component</p></h3>

Emitter will turn 'on' when the activation expression is non-zero, and will turn 'off' when it's zero.  This is useful for situations like driving an entity-attached emitter from an actor variable.</br><h4></h4>
<br / ><textarea readonly="true" cols="73" rows="10">
"minecraft:emitter_lifetime_expression": {
    // When the expression is non-zero, the emitter will emit particles.
    // Evaluated every frame
    "activation_expression": <float/molang> <default:1>

    // Emitter will expire if the expression is non-zero.
    // Evaluated every frame
    "expiration_expression": <float/molang> <default:0>
}
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<h3><p id="Emitter Lifetime Looping component">Emitter Lifetime Looping component</p></h3>

Emitter will loop until it is removed.</br><h4></h4>
<br / ><textarea readonly="true" cols="68" rows="11">
"minecraft:emitter_lifetime_looping": {

    // emitter will emit particles for this time per loop
    // evaluated once per particle emitter loop
    "active_time": <float/molang> <default:10>

    // emitter will pause emitting particles for this time per loop
    // evaluated once per particle emitter loop
    "sleep_time": <float/molang> <default:0>
}
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<h3><p id="Emitter Lifetime Once component">Emitter Lifetime Once component</p></h3>

Emitter will execute once, and once the lifetime ends or the number of particles allowed to emit have emitted, the emitter expires.</br><h4></h4>
<br / ><textarea readonly="true" cols="47" rows="6">
"minecraft:emitter_lifetime_once": {
    // how long the particles emit for
    // evaluated once
    "active_time": <float/molang> <default:10>
}
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<br><br>

<h2><p id="Emitter Rate Components">Emitter Rate Components</p></h2>

<h3></h3>

<h3><p id="Emitter Rate Instant component">Emitter Rate Instant component</p></h3>

All particles come out at once, then no more unless the emitter loops.</br><h4></h4>
<br / ><textarea readonly="true" cols="49" rows="6">
"minecraft:emitter_rate_instant": {
    // this many particles are emitted at once
    // evaluated once per particle emitter loop
    "num_particles": <float/molang> <default:10>
}
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<h3><p id="Emitter Rate Manual component">Emitter Rate Manual component</p></h3>

Particle emission will occur only when the emitter is told to emit via the game itself.  This is mostly used by legacy particle effects.</br><h4></h4>
<br / ><textarea readonly="true" cols="49" rows="5">
"minecraft:emitter_rate_manual": {
    // evaluated once per particle emitted
    "max_particles": <float/molang> <default:50>
}
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<h3><p id="Emitter Rate Steady component">Emitter Rate Steady component</p></h3>

Particles come out at a steady or MoLang rate over time.</br><h4></h4>
<br / ><textarea readonly="true" cols="79" rows="10">
"minecraft:emitter_rate_steady": {
    // how often a particle is emitted, in particles/sec
    // evaluated once per particle emitted
    "spawn_rate": <float/molang> <default:1>

    // maximum number of particles that can be active at once for this emitter
    // evaluated once per particle emitter loop
    "max_particles": <float/molang> <default:50>
}
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<br><br>

<h2><p id="Emitter Shape Components">Emitter Shape Components</p></h2>

Shape controls both where the particles are emitted from and the initial direction of the particles.</br><h3></h3>

<h3><p id="Emitter Shape Custom component">Emitter Shape Custom component</p></h3>

All particles are emitted  based on a specified set of MoLang expressions.</br><h4></h4>
<br / ><textarea readonly="true" cols="89" rows="10">
"minecraft:emitter_shape_custom": {
    // specifies the offset from the emitter to emit the particles
    // evaluated once per particle emitted
    "offset": [<float/molang>, <float/molang>, <float/molang>] <default:[0, 0, 0]>

    // specifies the direciton for the particle
    // evaluated once per particle emitted
    "direction": [<float/molang>, <float/molang>, <float/molang>] <default:[0, 0, 0]    
}
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<h3><p id="Emitter Shape Entity-AABB component">Emitter Shape Entity-AABB component</p></h3>

All particles come out of the axis-aligned bounding box (AABB) for the entity the emitter is attached to, or the emitter point if no entity.</br><h4></h4>
<br / ><textarea readonly="true" cols="89" rows="5">
"minecraft:emitter_shape_entity_aabb": {
    // evaluated once per particle emitted
    "direction": [<float/molang>, <float/molang>, <float/molang>] <default:[0, 0, 0]    
}
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<h3><p id="Emitter Shape Point component">Emitter Shape Point component</p></h3>

All particles come out of a point offset from the emitter.</br><h4></h4>
<br / ><textarea readonly="true" cols="83" rows="10">
"minecraft:emitter_shape_point": {
    // specifies the offset from the emitter to emit the particles
    // evaluated once per particle emitted
    "offset": [<float/molang>, <float/molang>, <float/molang>] <default:[0, 0, 0]>

    // specifies the direciton of particles.  
    // evaluated once per particle emitted
    "direction": [<float/molang>, <float/molang>, <float/molang>]
}
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<h3><p id="Emitter Shape Sphere component">Emitter Shape Sphere component</p></h3>

All particles come out of a sphere offset from the emitter.</br><h4></h4>
<br / ><textarea readonly="true" cols="83" rows="19">
"minecraft:emitter_shape_sphere": {
    // specifies the offset from the emitter to emit the particles
    // evaluated once per particle emitted
    "offset": [<float/molang>, <float/molang>, <float/molang>] <default:[0, 0, 0]>

    // sphere radius
    // evaluated once per particle emitted
    "radius": <float/molang> <default:1>

    // emit only from the surface of the sphere
    "surface_only": <bool> <default:false>

    // specifies the direciton of particles.  Defaults to "outwards"
    "direction": "inwards" // particle direction towards center of sphere
    "direction": "outwards" // particle direction away from center of sphere
    // evaluated once per particle emitted
    "direction": [<float/molang>, <float/molang>, <float/molang>]
}
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<br><br>

<h2><p id="Initial State Components">Initial State Components</p></h2>

<h3></h3>

<h3><p id="Emitter Local Space component">Emitter Local Space component</p></h3>

This component specifies the frame of reference of the emitter.  Applies only when the emitter is attached to an entity.  When 'position' is true, the particles will simulate in entity space, otherwise they will simulate in world space.  Rotation works the same way for rotation. Default is false for both, which makes the particles emit relative to the emitter, then simulate independently from the entity. Note that rotation = true and position = false is an invalid option.</br><h4></h4>
<br / ><textarea readonly="true" cols="35" rows="5">
"minecraft:emitter_local_space": {
    "position": <bool>
    "rotation": <bool>
}
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<br><br>

<br><br>

<h1><p id="Particle Components">Particle Components</p></h1>

<h2></h2>

<h2><p id="Particle Appearance Components">Particle Appearance Components</p></h2>

<h3></h3>

<h3><p id="Particle Appearance Billboard component">Particle Appearance Billboard component</p></h3>

This component tells the particle system to render the particle as a billboard, a rectangle in the world facing a particluar direction.</br><h4></h4>
<br / ><textarea readonly="true" cols="112" rows="32">
"minecraft:particle_appearance_billboard": {
    // specifies the x/y size of the billboard
    // evaluated every frame
    "size": [<float/molang>, <float/molang>],

    // used to orient the billboard.  Options are:
    // "rotate_xyz" - aligned to the camera, perpendicular to the view axis
    // "rotate_y" -aligned to camera, but rotating around world y axis
    // "lookat_xyz" - aimed at the camera, biased towards world y up
    // "lookat_y" - aimed at the camera, but rotating around world y axis
    // "direction" - billboard is aligned perpendicular to the direction vector, 
    //    e.g. a direction of [0, 1, 0] would have the particle facing upwards
    "face_camera_mode": <string>

    // specifies the UVs for the particle.  
    "uv": {
        // specifies the assumed texture width/height
        // defaults to 1
        // when set to 1, UV's work just like normalized UV's
		// when set to the texture width/height, this works like texels
        "texturewidth": <int>,
        "textureheight": <int>,

        // Assuming the specified texture width and height, use these 
        // uv coordinates.  
        // evaluated every frame
        "uv": [<float/molang>, <float/molang>],
        "uv_size": [<float/molang>, <float/molang>],

        // alternate way via specifying a flipbook animation
		// a flipbook animation uses pieces of the texture to animate, by stepping over time from one 
		// "frame" to another
        "flipbook": {
            "base_UV": [ <float/molang>, <float/molang> ], // upper-left corner of starting UV patch
            "size_UV": [ <float>, <float> ], // size of UV patch
            "step_UV": [ <float>, <float> ], // how far to move the UV patch each frame
            "frames_per_second": <float>, // default frames per second
            "max_frame": <float/molang>, // maximum frame number, with first frame being frame 1
            "stretch_to_lifetime": <bool>, // optional, adjust fps to match lifetime of particle. default=false
            "loop":  <bool> // optional, makes the animation loop when it reaches the end? default=false
        }
    }
}
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<h3><p id="Particle Appearance Lighting">Particle Appearance Lighting</p></h3>

When this component exists, particle will be tinted by local lighting conditions in-game</br><h4></h4>
<br / ><textarea readonly="true" cols="45" rows="2">
"minecraft:particle_appearance_lighting": {}
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<h3><p id="Particle Appearance Tinging component">Particle Appearance Tinging component</p></h3>

Color tinting of the particle</br><h4></h4>
<br / ><textarea readonly="true" cols="78" rows="23">
// color fields are special, they can be either an RGB, or a "#RRGGBB"
// field (or RGBA or "AARRGGBB").  If RGB(A), the channels are
// from 0 to 1.  If the string is "#RRGGBB" or "#AARRGGBB", the values are
// hex from 00 to ff.
//
// this pseudo-type will be denoted by <color>
"minecraft:particle_appearance_tinting": {
    // interpolation based color
    "color": {
        // an array of colors
        // it is assumed that the colors are equally spaced for interpolation
        // and that the range of the color interpolation values are 0 to 1
        //
        // for example, a 3 color "color" field with an interpolant value
        // of 0.5 would pick the second color
        "gradient": [ <color>, <color>, ...],
        "interpolant": <float/molang> // hint: use a curve here!
    }

    // directly set the color
    "color": <color>
}
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<br><br>

<h2><p id="Particle Initial State Components">Particle Initial State Components</p></h2>

<h3></h3>

<h3><p id="Particle Initial Speed component">Particle Initial Speed component</p></h3>

Starts the particle with a specified speed, using the direction specified by the emitter shape.</br><h4></h4>
<br / ><textarea readonly="true" cols="63" rows="3">
// evaluated once
"minecraft:particle_initial_speed": <float/molang> <default:0>
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<h3><p id="Particle Initial State component">Particle Initial State component</p></h3>

Starts the particle with a specified orientation and rotation rate.</br><h4></h4>
<br / ><textarea readonly="true" cols="49" rows="10">
"minecraft:particle_initial_spin": {
    // specifies the initial rotation in degrees
    // evaluated once
    "rotation": <float/molang> <default:0>

    // specifies the spin rate in degrees/second
    // evaluated once
    "rotation_rate": <float/molang> <default:0>
}
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<br><br>

<h2><p id="Particle Lifetime Components">Particle Lifetime Components</p></h2>

<h3></h3>

<h3><p id="Particle Expire If In Blocks component">Particle Expire If In Blocks component</p></h3>

Particles expire when in a block of the type in the list. Note: this component can exist alongside particle_lifetime_expression.</br><h4></h4>
<br / ><textarea readonly="true" cols="70" rows="9">
"minecraft:particle_expire_if_in_blocks" [
    // minecraft block names, e.g. 'minecraft:water', 'minecraft:air'
    // these are typically the same name as in the /setblock command
    // except for the minecraft: prefix
    "blockname1",
    "blockname2", 
    ...
],
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<h3><p id="Particle Expire If Not In Blocks component">Particle Expire If Not In Blocks component</p></h3>

Particles expire when in a block of the type not in the list. Note: this component can exist alongside particle_lifetime_expression.</br><h4></h4>
<br / ><textarea readonly="true" cols="70" rows="9">
"minecraft:particle_expire_if_not_in_blocks" [
    // minecraft block names, e.g. 'minecraft:water', 'minecraft:air'
    // these are typically the same name as in the /setblock command
    // except for the minecraft: prefix
    "blockname1",
    "blockname2", 
    ...
],
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<h3><p id="Particle Lifetime Expression component">Particle Lifetime Expression component</p></h3>

Standard lifetime component.  These expressions control the lifetime of the particle.</br><h4></h4>
<br / ><textarea readonly="true" cols="70" rows="12">
"minecraft:particle_lifetime_expression": {
    // this expression makes the particle expire when true (non-zero)
    // The float/expr is evaluated once per particle
    // evaluated every frame
    "expiration_expression": <float/molang> <default:0>
 
	// alternate way to express lifetime
    // particle will expire after this much time
    // evaluated once
    "max_lifetime": <float/molang>
},
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<br><br>

<h2><p id="Particle Motion Components">Particle Motion Components</p></h2>

<h3></h3>

<h3><p id="Particle Motion Collision component">Particle Motion Collision component</p></h3>

This component enables collisions between the terrain and the particle. Collision detection in Minecraft consists of detecting an intersection, moving to a nearby non-intersecting point for the particle (if possible), and setting its direction to not be aimed towards the collision (usually perpendicular to the collision surface).  Note that if this component doesn't exist, there will be no collision.</br><h4></h4>
<br / ><textarea readonly="true" cols="92" rows="22">
"minecraft:particle_motion_collision": {
    // enables collision when true/non-zero.
    // evaluated every frame
    "enabled": <bool/molang> <default:true>

    // alters the speed of the particle when it has collided
    // useful for emulating friction/drag when colliding, e.g a particle
    // that hits the ground would slow to a stop.
    // This drag slows down the particle by this amount in blocks/sec
    // when in contact
    "collision_drag": <float>

    // used for bouncing/not-bouncing
    // Set to 0.0 to not bounce, 1.0 to bounce back up to original height
    // and in-between to lose speed after bouncing.  Set to >1.0 to gain height each bounce
    "coefficient_of_restitution": <float>

    // used to minimize interpenetration of particles with the environment
    // note that this must be less than or equal to 1/2 block
    "collision_radius": <float>
}
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<h3><p id="Particle Motion Dynamic component">Particle Motion Dynamic component</p></h3>

This component specifies the dynamic properties of the particle, from a simulation standpoint what forces act upon the particle? These dynamics alter the velocity of the particle, which is a combination of the direction of the particle and the speed. Particle direction will always be in the direction of the velocity of the particle.</br><h4></h4>
<br / ><textarea readonly="true" cols="85" rows="32">
"minecraft:particle_motion_dynamic": {
    // the linear acceleration applied to the particle, defaults to [0, 0, 0].
    // Units are blocks/sec/sec
    // An example would be gravity which is [0, -9.8, 0]
    // evaluated every frame
    "linear_acceleration": [<float/molang>, <float/molang>, <float/molang>],

    // using the equation:
    // acceleration = -linear_drag_coefficient*velocity
    // where velocity is the current direction times speed
    // Think of this as air-drag.  The higher the value, the more drag
    // evaluated every frame
    "linear_drag_coefficient": <float/molang> <default:0>

    // acceleration applies to the rotation speed of the particle
    // think of a disc spinning up or a smoke puff that starts rotating
    // but slows down over time
    // evaluated every frame
    // acceleration is in degrees/sec/sec
    "rotation_acceleration" <float/molang> <default:0>

    // drag applied to retard rotation
    // equation is rotation_acceleration += -rotation_rate*rotation_drag_coefficient
    // useful to slow a rotation, or to limit the rotation acceleration
    // Think of a disc that speeds up (acceleration) 
    // but reaches a terminal speed (drag)
    // Another use is if you have a particle growing in size, having
    // the rotation slow down due to drag can add "weight" to the particle's
    // motion
    "rotation_drag_coefficient" <float/molang> <default:0>
}
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<h3><p id="Particle Motion Parametric component">Particle Motion Parametric component</p></h3>

This component directly controls the particle.  Note that this component won't work for either manually-emitted particles, or entity-based particle emitters that aren't in local space.</br><h4></h4>
<br / ><textarea readonly="true" cols="72" rows="19">
"minecraft:particle_motion_parametric": {
    // directly set the position relative to the emitter. 
    // E.g. a spiral might be:
    // "relative_position": ["Math.cos(Params.LifeTime)", 1.0, 
    //                       "Math.sin(Params.Lifetime)"]
    // defaults to [0, 0, 0]
    // evaluated every frame
    "relative_position": [<float/molang> <float/molang> <float/molang>]

    // directly set the 3d direction of the particle
    // doesn't affect direction if not specified
    // evaluated every frame
    "direction": [<float/molang> <float/molang> <float/molang]

    // directly set the rotation of the particle
    // evaluated every frame
    "rotation": <float/molang> <default:0>
}}
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<br><br>

<br><br>

<br><br>

<h1><p id=" Examples"> Examples</p></h1>

<h1><p id=" Flame particle"> Flame particle</p></h1>

This particle is the little flame that appears on torches and furnaces to indicate fire.  It is a simple particle, consisting of a non-moving flame, with some variations.  Note the use of MoLang to create variations in the particle behavior.</br></br>In addition, the use of texturewidth/height in the UV section of the billboard component allows referencing of UVs via texels:</br><h2></h2>
<br / ><textarea readonly="true" cols="75" rows="32">
{
  "format_version": "1.8.0",
  "particles": {
    "minecraft:basic_flame_particle": {
      "basic_render_parameters": {
        "material": "particles_alpha",
        "texture": "textures/particle/particles"
      },
      "components": {
        "minecraft:emitter_rate_instant": {
          "num_particles": 1
        },
        "minecraft:emitter_lifetime_once": {
          "active_time": 0
        },
        "minecraft:emitter_shape_sphere": {
          "radius": 0.025,
          "direction": [ 0, 0, 0 ]
        },
        "minecraft:particle_lifetime_expression": {
          "max_lifetime": "Math.random(0.6, 2.0) "
		},
		"minecraft:particle_appearance_billboard": {
			"size": [
				"(0.1 + variable.ParticleRandom1*0.1) - (0.1 * variable.ParticleAge)",
					"(0.1 + variable.ParticleRandom1*0.1) - (0.1 * variable.ParticleAge)"
			],
				"facing_camera_mode" : "lookat_xyz",
					"uv" : {
					"texturewidth": 128,
						"textureheight" : 128,
						"uv" : [0, 24],
						"uv_size" : [8, 8]
				}
		}
	  }
	}
  }
}

</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<h1><p id=" Smoke particle"> Smoke particle</p></h1>

This particle is the general-purpose smoke puff.  It appears on torches, furnaces, Blazes, etc.  It is a simple particle with an upward motion consisting of an upwards acceleration tempered by drag. </br></br>The main feature of this particle different from the flame particle is the flipbook texture animation.  See the details in the particle below, but the effect uses a flipbook subpart of the billboard appearance component to drive uv coordinates from frame to frame over time.</br></br>In addition, the use of texturewidth/height in the UV section of the billboard component allows referencing of UVs via texels for the flipbook:</br><h2></h2>
<br / ><textarea readonly="true" cols="116" rows="32">
{
  "format_version": "1.8.0",
  "particles": {
    "minecraft:basic_smoke_particle": {
      "basic_render_parameters": {
        "material": "particles_alpha",
        "texture": "textures/particle/particles"
      },
      "components": {
        "minecraft:emitter_rate_instant": {
          "num_particles": 1
        },
        "minecraft:emitter_lifetime_once": {
          "active_time": 0
        },
        "minecraft:emitter_shape_custom": {
          "offset": [ 0, 0, 0 ],
          "direction": [ "Math.random(-0.1, 0.1)", 1.0, "Math.random(-0.1, 0.1)" ]
		},
		"minecraft:particle_initial_speed": 1.0,
			"minecraft:particle_lifetime_expression" : {
			"max_lifetime": "Math.random(0.4, 1.4)"
		},
			"minecraft:particle_motion_dynamic" : {
				"linear_acceleration": [0, 0.4, 0]
			},
				"minecraft:particle_appearance_billboard" : {
					"size": [0.1, 0.1],
						"facing_camera_mode" : "lookat_xyz",
						"uv" : {
						"texturewidth": 128,
							"textureheight" : 128,
							"flipbook" : {
							"base_UV": [56, 0],
								"size_UV" : [8, 8],
								"step_UV" : [-8, 0],
								"frames_per_second" : 8,
								"max_frame" : 8,
								"stretch_to_lifetime" : true,
								"loop" : false
						}
					}
				},
					"minecraft:particle_appearance_tinting": {
					"color": ["variable.ParticleRandom1*0.5", "variable.ParticleRandom1*0.5", "variable.ParticleRandom1*0.5", 1.0]
				},
					"minecraft:particle_appearance_lighting" : {}
	  }
	}
  }
}

</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<h1><p id=" Mob Flame effect"> Mob Flame effect</p></h1>

The mob flame effect is used by the Blaze when it's charging up to hurl fireballs.  This is a flipbook flame effect that rises over time.</br></br>This emitter is typically tied to an entity.  This allows the use of the entity_aabb shape, as we want the flames to appear all over the blaze.  The effect is created/destroyed by the entity, thus the effect itself just needs to be always on.</br></br>For this effect, we use the texturewidth/height to make the texel "resolution" be one frame of animation, thus allowing advancement of the frames to be just one.</br><h2></h2>
<br / ><textarea readonly="true" cols="65" rows="32">
{
  "format_version": "1.8.0",
  "particles": {
    "minecraft:mobflame_emitter": {
      "basic_render_parameters": {
        "material": "particles_alpha",
        "texture": "textures/flame_atlas"
      },
      "components": {
        "minecraft:emitter_local_space": {
          "position": true,
          "rotation": true
        },
        "minecraft:emitter_rate_steady": {
          "spawn_rate": "Math.random(15, 25)",
          "max_particles": 50
        },
        "minecraft:emitter_lifetime_expression": {
          "activation_expression": 1,
          "expiration_expression": 0
        },
        "minecraft:emitter_shape_entity_aabb": {
          "direction": [ 0, 1, 0 ]
        },
        "minecraft:particle_initial_speed": "Math.random(0, 1)",
        "minecraft:particle_lifetime_expression": {
          "max_lifetime": 1.25
        },
        "minecraft:particle_motion_dynamic": {
          "linear_acceleration": [ 0, 1.0, 0 ],
          "linear_drag_coefficient": 0.0
        },
        "minecraft:particle_appearance_billboard": {
          "size": [ 0.5, 0.5 ],
          "facing_camera_mode": "lookat_xyz",
          "uv": {
            "texturewidth": 1,
            "textureheight": 32,
            "flipbook": {
              "base_UV": [ 0, 0 ],
              "size_UV": [ 1, 1 ],
              "step_UV": [ 0, 1 ],
              "frames_per_second": 32,
              "max_frame": 32,
              "stretch_to_lifetime": true,
              "loop": false
            }
          }
        }
      }
    }
  }
}
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<h1><p id=" Bouncing Bubbles"> Bouncing Bubbles</p></h1>

This particle effect generates a bunch of bubbles that bounce around.</br><h2></h2>
<br / ><textarea readonly="true" cols="102" rows="32">
{
  "format_version": "1.8.0",
  "particles": {
    "minecraft:bounce": {
      "basic_render_parameters": {
        "material": "particles_alpha",
        "texture": "textures/particle/particles"
      },
      "components": {
        "minecraft:emitter_rate_instant": {
          "num_particles": 100
        },
        "minecraft:emitter_lifetime_once": {
          "active_time": 2
        },
        "minecraft:emitter_shape_sphere": {
          "offset": [ "Math.random(-0.5, 0.5)", "Math.random(-0.5, 0.5)", "Math.random(-0.5, 0.5)" ],
          "direction": "outwards",
          "radius": 1
        },
        "minecraft:particle_initial_speed": 5.0,
        "minecraft:particle_initial_spin": {
          "rotation": "Math.random(0, 360)",
          "rotation_rate": 0
        },
        "minecraft:particle_lifetime_expression": {
          "max_lifetime": "5"
        },
        "minecraft:particle_motion_dynamic": {
          "linear_acceleration": [ 0, -9.8, 0 ]
        },
        "minecraft:particle_motion_collision": {
          "coefficient_of_restitution": 0.5,
          "collision_drag": 4,
          "collision_radius": 0.1
        },
        "minecraft:particle_appearance_billboard": {
          "size": [ "0.1", "0.1" ],
          "facing_camera_mode": "rotate_xyz",
          "uv": {
            "texturewidth": 128,
            "textureheight": 128,
            "uv": [ 0, 16 ],
            "uv_size": [ 8, 8 ]
          }
        },
        "minecraft:particle_appearance_lighting": {}
      }
    }
  }
}
}
</textarea> </br>
<a href="#Index">返回顶部</a><br><br>
<br><br>
<center>
</br></br></br></br>
<div id="endLink">
<i class="czs-bilibili"></i> <i class="czs-qq"></i>
<i class="czs-bilibili"></i> <i class="czs-bilibili"></i>
<i class="czs-bilibili"></i> <i class="czs-bilibili"></i>
</br>
<h5 style="float:right;">蓝莓小果冻滑稽出品</br>
本站由8i7主机/天翼云托管</h5>
<h5 style="float:left;">图片大部分为gitee托管</br>一些引用的其他网站</h5></br></br>
Copyright ©2019 by Bemly_.</br>All rights reserved.
<!--瞅啥瞅，我是永远不会备案滴(･_･;-->
</div></br></br></br>
</center>
</body>
</html>